package pe.com.cotelasa.scp.dao.impl;

import java.io.Serializable;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import pe.com.cotelasa.common.dao.DaoImpl;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOTipoDocumento;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.entidad.TipoDocumento;

/**
 *
 * @author usuario
 */
@Repository("daoTipoDocumento")
public class DAOTipoDocumentoImpl extends DaoImpl<TipoDocumento, Integer> implements IDAOTipoDocumento, Serializable {

    @Autowired
    private SessionFactory sessionFactory;
    
    @Transactional
    public TipoDocumento obtenerTipoDocumentoPorNombre(TipoDocumento tipoDocumento) throws DAOException {
        TipoDocumento documentoCorrelativo = new TipoDocumento();
        try {
            System.out.println("documento: "+tipoDocumento.getNombre());
            sessionFactory.getCurrentSession().flush();
            documentoCorrelativo = (TipoDocumento) sessionFactory.getCurrentSession().createCriteria(TipoDocumento.class)                    
                                    .add(Restrictions.like("estadoRegistro", ESTADO_REGISTRO.ACTIVO.getValor()))
                                    .add(Restrictions.like("nombre", tipoDocumento.getNombre()))
                                    .uniqueResult();

            System.out.println("documento encontradp: "+documentoCorrelativo.getNombre());
        } catch (Exception e) {
            throw new DAOException(e.getMessage(), e);
        }

        return documentoCorrelativo;
    }
}
